package org.example.generics;

import java.util.*;

public class Demo2 {
    public static void main(String[] args) {
        List<?> list = new ArrayList<String>();
//        List<? extends A> uNumberList = new ArrayList<String>(); // String不是A的子类，会报错
        List<? extends A> uNumberList = new ArrayList<B>(); // B是A的子类，不会报错
//        List<? super B> integerList = new ArrayList<String>();  // String不是B的父类，会报错
        List<? super B> integerList = new ArrayList<A>();   // A是B的父类，不会报错
    }

    public static void tt(ArrayList<?> arrayList) {
        Iterator<?> ite = arrayList.iterator();
        // next()方法取出的元素是Object，可以接收任意的数据类型
        Object object = ite.next();
    }

    public static void aa(HashSet<? extends Number> hashSet) {
        Iterator<? extends Number> ite = hashSet.iterator();
        // next()方法取出的元素是Object，可以接收任意的数据类型
        Number next = ite.next();
    }
    public static void bb(LinkedList<? super B> list) {
        Iterator<? super B> ite = list.iterator();
        Object next = ite.next();
    }

    static class A{}

    static class B extends A{}

}
